package com.njit.mailm.core.dao;

import com.njit.mailm.core.bean.*;

import java.util.List;

public interface MailDao {

	/**
	 * 批量插入邮件
	 * @param messages 邮件list
     */
	void batchInsertMessage(List<MessageWrap> messages);

	void newBatchInsertMessage(List<MessageWrap> messages);

	/**
	 * 显示所有邮件
	 * @return 邮件列表
     */
	List<MessageWrap> listAll();

	/**
	 * 通过邮件GUID查找邮件
	 * @param id 邮件GUID
	 * @return 邮件对象
     */
	MessageWrap selectMessageById(String id);

	/**
	 * 插入单个邮件
	 * @param message 邮件对象
     */
	void insertMessage(MessageWrap message);

	/**
	 * 查找邮件的最晚发送时间
	 * @return 时间字符串
     */
	String getLastTime();

	/**
	 * 分页显示邮件
	 * @param page 页面对象
	 * @param email 邮箱对象
     * @return 邮件列表
     */
	List<MessageWrap> pageList(Page page,Email email);

	/**
	 * 获得邮箱对应的邮件总数
	 * @param email 邮箱对象
	 * @return 总数
     */
	int getMailTotal(Email email);

	/**
	 * 插入邮箱
	 * @param email 邮箱对象
     */
	void insertMail(Email email);

	/**
	 * 查找pop是否存在
	 * @param popIp pop服务器ip地址
	 * @return id
     */
	String findPop(String popIp);

	/**
	 * 找smtp是否存在
	 * @param smtpIp smtp 服务器ip地址
	 * @return id
     */
	String findSmtp(String smtpIp);

	/**
	 * 插入pop
	 * @param pop pop对象
     */
	void insertPop(Pop pop);
	/**
	 * 插入smtp
	 * @param smtp smtp对象
	 */
	void insertSmtp(Smtp smtp);

	/**
	 * 通过user对象查找对应的邮箱
	 * @param user 用户对象
	 * @return 邮箱列表
     */
	List<Email> getEmailsByUser(User user);

	/**
	 * 通过邮箱id查找邮箱
	 * @param id 邮箱id
	 * @return 邮箱对象
     */
	Email getEmailById(String id);

	/**
	 * 添加收件人
	 * @param mWrap
     */
	void insertTO(MessageWrap mWrap);

	/**
	 * 添加密送
	 * @param mWrap
     */
	void insertBcc(MessageWrap mWrap);

	/**
	 * 添加抄送
	 * @param mWrap
     */
	void insertCc(MessageWrap mWrap);
}
